if ( !window['Openjsl'] ) {
    window['Openjsl'] = {};
}

Openjsl['version'] = '0.0.1';

new function() { // общая инициализация
    // получаю путь до корневой папки
    var scripts = document.getElementsByTagName( 'script' );
    var script = scripts[scripts.length - 1];
    var path = script.src.toString().split( '/' );
    if ( path[path.length-1] != '/' ) path.pop();
    path = path.join( '/' )+'/';
    Openjsl['root_path'] = path;
}();

/**
 * Загрузка модуля по его имени
 *
 * @param name      Имя модуля в формате package.subpackage.class
 *                  Загрузит модуль ./package/subpackage/class.js
 *
 */
Openjsl['load_module'] = function( name, callback ) {
    var full_path = name.split( '.' ).join( '/' );
    full_path = Openjsl.root_path + full_path + '.js';

    var script = document.createElement( 'script' );

    if ( typeof callback == 'function' ) {
        if ( typeof script['onreadystatechange'] == 'function' ) { // ?
            script.onreadystatechange = function() {
                if (this.readyState == 'complete') {
                    callback();
                }
            }
        }
        else {
            script.onload = callback;
        }
    }

    script.setAttribute( 'type', 'text/javascript' );
    script.setAttribute( 'charset', 'utf-8' );
    script.setAttribute( 'src', full_path );

    var head = document.getElementsByTagName('head').item(0);
    head.insertBefore( script, head.firstChild );
}

function ojsl_init( canvas_obj, params ) {
    if ( !Openjsl['core'] ) { // экономлю ресурсы, не пробую грузить повторно
        Openjsl.load_module( 'core', function() { ojsl_init( canvas_obj, params ); } );
        return;
    }

    if ( !Openjsl['canvas'] ) { // Openjsl поддерживает несколько canvas
        Openjsl['canvas'] = {};
    }

    if ( !Openjsl.canvas[canvas_obj] ) {
        // нет поддержки canvas
        if ( typeof canvas_obj['getContext'] != 'function' ) return false;
        // добавляю сведения о новой канве
        Openjsl.canvas[canvas_obj] = canvas_obj.getContext( '2d' );
    }

    // меняю текущую канву
    //ojsl_ctx_activate( canvas_obj );

    //alert( Openjsl.core['active_ctx'] == Openjsl.canvas[canvas_obj] );
}

function ojsl_done() {

}
